home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / bbsutil / dlx70bbs.zip / DLX70SRC.ZIP / DATAINIT.PAS < prev    next >
Pascal/Delphi Source File  |  1994-01-19  |  11KB  |  324 lines

  1. {$debug-}
  2. {$line-}
  3.  
  4. {$include: 'types.int'}
  5. {$include: 'globals.int'}
  6. {$include: 'utils.int'}
  7. {$include: 'database.int'}
  8. {$include: 'datainit.int'}
  9.  
  10. IMPLEMENTATION OF datainit;
  11.  
  12. USES types,globals,utils,database;
  13.  
  14. {DLX Bulletin Board System V7.0
  15.  
  16.  FREEWARE NOTICE
  17.  
  18.  DLX V7.0 is placed in the public domain by its author, Richard Gillmann.
  19.  Anyone who wishes to may run the program, copy it, or modify it for
  20.  any purpose, including commercial gain.}
  21.  
  22. {***Interface to the PASASM assembler utilities package***}
  23. {$include: 'pasasm.int'}
  24. {$include: 'newasm.int'}
  25.  
  26. {***Interface to MS Pascal library***}
  27. procedure endxqq; EXTERN;
  28.  
  29. const
  30.   tab = chr(9);
  31.  
  32. var
  33.   rows [ORIGIN 16#40:16#84] : byte;
  34.   com1_port [EXTERN] : word;
  35.   com2_port [EXTERN] : word;
  36.   status_port1 [EXTERN] : word;
  37.   status_port2 [EXTERN] : word;
  38.   bits8 [EXTERN] : word;
  39.   eskape [EXTERN] : byte;
  40.   hostecho [PUBLIC] : boolean;
  41.   dcd_ok [PUBLIC] : boolean;
  42.  
  43. {strip trailing blanks and comments}
  44. procedure stripc(var str : lstring);
  45. var
  46.   i : integer;
  47. begin
  48.   for i:=1 to ord(str.len) do
  49.     if str[i]=chr(0) or else str[i]='{' then
  50.       [str.len:=wrd(i-1); break];
  51.   for i:=ord(str.len) downto 1 do
  52.     if str[i]=' ' or else str[i]=tab then str.len:=str.len-1 else break;
  53. end {stripc};
  54.  
  55. procedure opengl;
  56. begin
  57.   f_globals.trap:=true;
  58.   f_globals.errs:=0;
  59.   assign(f_globals,globs);
  60.   reset(f_globals);
  61.   if f_globals.errs=0 then readln(f_globals,number_of_calls);
  62.   if f_globals.errs=0 then readln(f_globals,last_new_user);
  63.   if not eof(f_globals) then readln(f_globals,mem_avl);
  64.   close(f_globals);
  65. end {opengl};
  66.  
  67. procedure db_open_all;
  68. var
  69.   i : integer;
  70.   pm1,pm2 : pubmail_ptr;
  71.   str : lstring(screen_cols);
  72.   ud,ut,u_day,u_time : integer4;
  73.   flag : boolean;
  74. begin
  75.   last_save:=jt;
  76. {params}
  77.   write('4');
  78.   assign(f_params,'PARAMS');
  79.   reset(f_params);
  80.   readln(f_params,new_user_level);
  81.   readln(f_params,shortest_password);
  82.   readln(f_params,min_age);
  83.   readln(f_params,who_b_low);
  84.   readln(f_params,last_called_default);
  85.   readln(f_params,times_called_default);
  86.   readln(f_params,userlog_max);
  87.   readln(f_params,msg_line_limit);
  88.   readln(f_params,mbx_slot_limit);
  89.   readln(f_params,many_calls);
  90.   readln(f_params,closing_target);
  91.   readln(f_params,prime);
  92.   for i:=0 to 9 do
  93.     [read(f_params,time_limit[i]);
  94.      if time_limit[i]<0 then time_limit[i]:=0];
  95.   readln(f_params);
  96.   readln(f_params,chat_time_limit);
  97.   readln(f_params,prime_on);
  98.   readln(f_params,priv_reply);
  99.   readln(f_params,prime_access);
  100.   readln(f_params,priv_ans);
  101.   readln(f_params,priv_bio);
  102.   readln(f_params,priv_order);
  103.   readln(f_params,priv_send);
  104.   readln(f_params,priv_post);
  105.   readln(f_params,priv_chat);
  106.   readln(f_params,priv_bchatted);
  107.   readln(f_params,priv_gchat);
  108.   readln(f_params,priv_ad);
  109.   readln(f_params,priv_download);
  110.   readln(f_params,priv_upload);
  111.   readln(f_params,priv_x);
  112.   readln(f_params,priv_m);
  113.   readln(f_params,priv_br);
  114.   readln(f_params,priv_ma);
  115.   readln(f_params,priv_us);
  116.   readln(f_params,priv_cl);
  117.   readln(f_params,priv_db);
  118.   readln(f_params,verify_on);
  119.   readln(f_params,verify_target);
  120.   readln(f_params,order_target);
  121.   readln(f_params,file_realname); stripc(file_realname);
  122.   readln(f_params,timeout);
  123.   readln(f_params,beep_length);
  124.   readln(f_params,new_prime);
  125.   readln(f_params,confirm_multiple);
  126.   readln(f_params,confirm_essay);
  127.   readln(f_params,log_lowest);
  128.   readln(f_params,priv_log);
  129.   readln(f_params,essay_required);
  130.   readln(f_params,auto_delete);
  131.   readln(f_params,set_modem_cmd); stripc(set_modem_cmd);
  132.   readln(f_params,business);
  133.   for i:=1 to 6 do read(f_params,modem_delay[i]); readln(f_params);
  134.   readln(f_params,allow_new);
  135.   readln(f_params,max_retries);
  136.   readln(f_params,com1_port);
  137.   readln(f_params,com2_port);
  138.   readln(f_params,status_port1);
  139.   readln(f_params,status_port2);
  140.   readln(f_params,dcd_ok);
  141.   readln(f_params,nBump);
  142.   readln(f_params,megs_min);
  143.   readln(f_params,d4dnload);
  144.   readln(f_params,u4upload);
  145.   readln(f_params,brief_len);
  146.   readln(f_params,time_comments);
  147.   readln(f_params,path_library); stripc(path_library);
  148.   readln(f_params,chat_repeats);
  149.   readln(f_params,opening_w);
  150.   readln(f_params,log_bul);
  151.   readln(f_params,notify_max);
  152.   readln(f_params,nattr,iattr,gattr);
  153.   readln(f_params,path_db); stripc(path_db);
  154.   readln(f_params,bumpmax);
  155.   readln(f_params,privnbm); !no bump max
  156.   readln(f_params,min_db);
  157.   readln(f_params,prefdef); prefdef:=uc(prefdef);
  158.   if rows>24 then srm1:=ord(rows) else srm1:=24;
  159.   gstat:=srm1; screen_rows:=srm1+1;
  160.   readln(f_params,defchat); defchat:=uc(defchat);
  161.   if defchat<>'N' and then defchat<>'P' then defchat:=' ';
  162.   readln(f_params,defpage);
  163.   readln(f_params,realen);
  164.   readln(f_params,metric);
  165.   readln(f_params,flag); if flag then bits8:=16#7f else bits8:=16#ff;
  166.   readln(f_params,flag); if flag then eskape:=16#7f else eskape:=0;
  167.   readln(f_params,hostecho);
  168.   readln(f_params,wrap_column);
  169.   readln(f_params,channels);
  170.   readln(f_params,max_logtries);
  171.   readln(f_params,no_remote9s);
  172.   readln(f_params,file_dlog); stripc(file_dlog);
  173.   readln(f_params,file_ulog); stripc(file_ulog);
  174.   readln(f_params,file_olog); stripc(file_olog);
  175.   readln(f_params,fEmpties);
  176.   readln(f_params,ps2mc8);
  177.   readln(f_params,p2chatoff);
  178.   readln(f_params,priv_junk);
  179.   readln(f_params,fTrust);
  180.   readln(f_params,pwdigp);
  181.   close(f_params);
  182. {members}
  183.   write('5');
  184.   f_members.trap:=true;
  185.   f_members.errs:=0;
  186.   assign(f_members,members);
  187.   reset(f_members);
  188.   number_of_members:=0;
  189.   largest_member_number:=0;
  190.   while (f_members.errs=0) and then (not eof(f_members)) do begin
  191.     readln(f_members,member_internal_buffer);
  192.     if f_members.errs=0 then
  193.       [largest_member_number:=largest_member_number + 1;
  194.        movel(adr member_internal_buffer,adr member_buffer,member_length);
  195.        if ivalue(member_buffer.userid)<>largest_member_number then
  196.          writeln('MEMBERS file corrupt at record ',largest_member_number:1);
  197.        if member_buffer.active[1]='T' then
  198.          number_of_members:=number_of_members + 1];
  199.   end {while};
  200. !ifdef Demo
  201. !  if number_of_members>100 then endxqq;
  202.   write('6');
  203. {set up secondary index}
  204.   if largest_member_number<=UPPER(member_index^)
  205.     then member_index_top:=largest_member_number
  206.     else member_index_top:=UPPER(member_index^);
  207.   mbi:=sizeof(member_index^[1])*WRD(member_index_top);
  208.   member_index:=far_alloc(mbi);
  209.   reset(f_members);
  210.   i:=0;
  211.   while f_members.errs=0 and then (not eof(f_members)) and then
  212.         i<UPPER(member_index^) do begin
  213.     readln(f_members,member_internal_buffer);
  214.     if f_members.errs=0 then
  215.       [i:=i+1;
  216.        movel(adr member_internal_buffer,adr member_buffer,member_length);
  217.        member_index^[i].active:=(member_buffer.active[1]='T');
  218.        member_index^[i].gender[1]:=member_buffer.gender[1];
  219.        member_index^[i].pref[1]:=member_buffer.pref[1];
  220.        member_index^[i].age:=ivalue(member_buffer.age)];
  221.   end {while};
  222.   close(f_members);
  223.   f_members.mode:=direct;
  224.   f_members.trap:=true;
  225.   f_members.errs:=0;
  226.   assign(f_members,members);
  227.   reset(f_members);
  228.   members_io_flag:=getting;
  229. {pubmail}
  230.   write('7');
  231.   f_pubmail.trap:=true;
  232.   f_pubmail.errs:=0;
  233.   assign(f_pubmail,'PUBMAIL');
  234.   reset(f_pubmail);
  235.   pubmail:=nil;
  236.   while (f_pubmail.errs=0) and then (not eof(f_pubmail)) do begin
  237.     new(pm1);
  238.     if pubmail=nil then pubmail:=pm1 else pm2^.link:=pm1;
  239.     pm1^.link:=nil;
  240.     readln(f_pubmail,str); stripc(str); kopystr(str,pm1^.name);
  241.     if pm1^.name[1]=' ' then
  242.       [writeln('Excess characters at end of PUBMAIL file'); ret2dos(4)];
  243.     readln(f_pubmail,pm1^.letter);
  244.     readln(f_pubmail,pm1^.memberid);
  245.     readln(f_pubmail,pm1^.holdem);
  246.     readln(f_pubmail,pm1^.qaire);
  247.     if pm1^.qaire<>0 then
  248.       [copylst('MULTIPLE.0',str); str[10]:=chr(ord('0')+ord(pm1^.qaire));
  249.        if not exist_file(str) then
  250.          [writeln('Incorrect PUBMAIL or MULTIPLE file.'); ret2dos(4)]];
  251.     readln(f_pubmail,pm1^.mandatory);
  252.     readln(f_pubmail,pm1^.anon);
  253.     readln